﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	char c[5] = { 'a', 'b', '\0', 'c', '\0' };
//	printf("%s", c);
//	return 0;
//}

//int main()
//{
//	char a[] = "x+y=5.";
//	return 0;
//}


//1、编写一个函数，计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内(0~127 ，包括 0 和 127)，换行
//表示结束符，不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
//例如，对于字符串 abaca 而言，有 a、b、c 三种不同的字符，因此输出 3 。
//数据范围： 0 <= n <= 500
//输入描述：输入一行没有空格的字符串。
//输出描述：输出 输入字符串 中范围在(0~127，包括0和127)字符的种数。
//示例：
//输入：abc 输入：aaa
//输出：3 输出：1
//
//int main()
//{
//    char arr1[500] = { 0 };
//    int tmp = 0;
//    int i = 0;
//    int count = 0;
//    for (i = 0; i < 500; i++)
//    {
//        scanf("%c", &arr1[i]);
//        if (arr1[i] == '\n')
//        {
//            tmp = i;
//            break;
//        }
//    }
//    int arr2[128] = { 0 };
//    for (i = 0; i < tmp; i++)
//    {
//        if ((arr1[i] >= 0) && (arr1[i] <= 127))
//        {
//            if ((arr1[i] == '\n') || (arr1[i] == '\0'))
//            {
//                continue;
//            }
//            if (arr2[arr1[i]] == 0)
//            {
//                arr2[arr1[i]] = 1;
//                count++;
//            }
//        }
//    }
//    printf("%d", count);
//    return 0;
//}

//2、给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n / 2 ⌋ 的元素。
//你可以假设数组是非空的，并且给定的数组总是存在多数元素。
//示例：
//输入：[3, 2, 3]
//输出：3
//输入：[2, 2, 1, 1, 1, 2, 2]
//输出：2

int majorityElement(int* nums, int numsSize)
{
    int count[50000] = { 0 };
    int i = 0;
    int tmp = 0;
    for (i = 0; i < numsSize; i++)
    {
        if (nums[i] < 0)
        {
            continue;
        }
        if (count[nums[i]] == 0)
        {
            int j = i + 1;
            for (j = i; j < numsSize; j++)
            {
                if (nums[j] == nums[i])
                {
                    count[nums[i]]++;
                }
            }
        }
        printf("%d ", count[nums[i]]);
        if (count[nums[i]] > (numsSize / 2))
        {
            tmp = nums[i];
            break;
        }
    }
    return tmp;
}